package br.com.unioConci.upload.negocio;

import java.util.HashMap;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.Session;

import br.com.r2.util.hibernate.business.R2HbNgc;
import br.com.r2.util.hibernate.business.RestritorHb;
import br.com.unioConci.upload.vo.ArquivoRazaoAnaliticoVo;

public class ArquivoRazaoAnaliticoNgc extends R2HbNgc<ArquivoRazaoAnaliticoVo>
{

   private Map filtroPropriedade = new HashMap();

   private Map restritores = new HashMap();
   
   private static ArquivoRazaoAnaliticoNgc instancia = null;

   public static final int JOIN_USUARIO_INCLUSAO = 1;
   
   private ArquivoRazaoAnaliticoNgc()
   {
      init(restritores, filtroPropriedade, ArquivoRazaoAnaliticoVo.class);
      addFiltro("historico", RestritorHb.RESTRITOR_LIKE, "historico");
      addFiltro("dataBaixa", RestritorHb.RESTRITOR_DATA_INICIAL, "filtro.dataBaixaInicial");
      addFiltro("dataBaixa", RestritorHb.RESTRITOR_DATA_FINAL, "filtro.dataBaixaFinal");
   }

   public static ArquivoRazaoAnaliticoNgc getInstancia()
   {
      if (instancia == null)
      {
         instancia = new ArquivoRazaoAnaliticoNgc();
      }
      return instancia;
   }
   
   @Override
   protected Criteria montaCriteria(Session session, int join)
   {
      Criteria criteria = session.createCriteria(ArquivoRazaoAnaliticoVo.class);
      if ((join & JOIN_USUARIO_INCLUSAO) != 0)
      {
         criteria.createCriteria("usuarioInclusaoVo", "usuarioInclusao", Criteria.INNER_JOIN);
      }
      return criteria;
   }

   @Override
   protected Map filtroPropriedade()
   {
      return filtroPropriedade;
   }
   
   @Override
   protected Map restritores()
   {
      return restritores;
   }

}
